Clase 31.07¶
Cuando un dispositivo (como una computadora) quiere comunicarse con otro dentro de la misma red, necesita saber la dirección MAC del destino. Si solo conoce la dirección IP, usa ARP para descubrir la MAC correspondiente.
El dispositivo envÃa una solicitud ARP (ARP Request) a toda la red: "¿Quién tiene la IP 192.168.1.10? Responde con tu MAC."
El dispositivo con esa IP responde con su dirección MAC.
El solicitante guarda esa asociación IP ↔ MAC en su tabla ARP, una caché temporal.
En algun momento tenemos la necesidad que direccion fisica tiene una direccion ip. Entonces lo que hace el protocolo cuando alguien tiene la necesidad de hacer eso. Lo manda al brodcast del canal.
Y quien se identifique, sabe quien tiene ese dato . La persona o la entidad responderia que tiene eso.
La respuesta es directa la pregunta en brodcast. En cache se almacena las respuestas del ARP para no andar repitiendo lo mismo.
Mira asi le respondio el router
el sudo arp -va enlistar la cache
arp -v es verbose **-a formateo address ip***
-d
Clase 05.08¶
Capa de Red¶
Lo que tratamos de hacer es a diferencia de la capa de enlace, es no hacer cada uno de los saltos, sino que hay que hacer varios saltos para llevar paquetes
Routers¶
Forwading¶
Hacer reeenvio, accion de transferrior paquete en un enlace de netrada y un enlace de salida.
Routing¶
Proceso de rutas que los paquetes, y el se encarga de llenar las tablas que se consultan para saber en que direccion llegara el paquete
Entonces uno revisa la tabla y el otro la llena.
Sevicio Conecttion oriented y Coneection Less¶
Coneccion Less¶
Es el que gano ,estandar debido a que la filosofia de extremo a extremo, las redes en si que los datos no son confiables, entonces que sepamos que uno de cada tanto se va a perder. Si la red no es confiable, el punto A al punto B entre saltos pondre la direccion completa de destino y se recalcula la ruta, y cada host maneja errores. Esta basicamente tipo brodcast el servicio y de ahi viene ip.
Conection Oriented¶
No se recalcula la ruta, sino que se reserva la ruta entera. Y entonces se reservan variables y rutas en donde va a correr. Osea la ruta ya se reservo. Se gano una conexion, va a llegar bien los paquetes. Por eso se caia el internet al usar el telefono a la vez
Aqui puedes ver que ya se reservo esos saltos y nadie mas los puede usar, de aqui viene UDP
Algoritmos de Enrutamiento¶
-Tienen que ser simple
- Robusto ante fallos y nuevos nodos
- Estable o que converge osea que la tabla de enrutamiento converga a una definitiva
- Justo que todos puedan usar la red bien
Un ejemplo es aqui
El problema es que X y x' quieren comunicarse entre si. Entonces lo que podemos hacer para balancearlo es decirle a A y B que no compartan comunicacion, y entonces usar el canal, pero en esta distribucion sacrificas eficiencia.
Bellman¶
Hay maneras de optimizar los saltos entre cada enlace, lo que podemos usar son algoritmos de optimizacion como e Bellman.
Lo que queremos hacer es encontrar optimizas, lo que dice es
Hay ciertos nodos en un grafo , pero hay una ruta con minima distancia. Si resulta que hay otro nodo J , por consiguiente, ese nodo es parte de la ruta optima si J es optimo.
Nos dice que la subruta , tambien pertenece a la ruta optima. Esto para N nodos aplica.
Djiskstra¶
Resuelve la ruta optima, lo que hace es que vamos a ir iterativvamente resolviendo el grafo, no solo resuleto la ruta de A a B , sino todas las rutas de A hacia todos los destinos y encontrar la que tenga el menor de los pesos.
El problema es que la red no es estatica sino dinamica. Y djisktra depende de que si sea estatico.
Flooding¶
El problema de este es que por brodcast mandamos todo
Osea que hacemos propagacion a todos los vecinos y estos a sus vecinos
Algirmots Dinamicos¶
Disntacia Vector Routing¶
Cada tanto tiempo usamos la tabla, la empaquetamos, la mandamos por brodcast, porque esto se lo envio a los vecions. Entonces y usando esa info, van a actualizar su tabla sin tener que
EL enrutador va a recibir de todos la informacion de la tabla, pero cada PC pedira al router la tabla que debemos de usar.
Por ejemplo
$$JG = JA + AG = 26$$
Link state routing¶
Para llegar a la convergencia de la tabla, el problema es que cuando alguien se desconectaba en el anterior, entonces para darse cuenta que estaba muerto pasa muchisimo.
Cada router descubre su vecindario (a quién está conectado y el costo de los enlaces).
EnvÃa esa información a todos los routers (mediante mensajes llamados Link State Advertisements, LSAs).
Todos los routers construyen un mapa completo de la red.
Cada router calcula la mejor ruta a cada destino usando Dijkstra.
Clase 0708¶
Esta fue de un repaso rapido de la anterior solo recordar que
- Paquetes que se envian en la red
- Paquetes que se envian en la red
Proyecto 1¶
Vamos a hacer un MCP server , en donde pueda usar los LLMS para poder nutrirse y saber que hacer. EL objetivo es un chat donde le puedas hacer varias preguntas , esto se hace con un protocolo de RCP y json usando un server MCP.
La parte de probar remoto,no vamos a probar, es que pasaremos el .py del server, lo que hace MCP hace las llamadas y toma el control del server. Pasamos el codgo dela gente porque nos gastaremos los credtos de los demas.
Clase 1208¶
Este diagrama como ves no es tan justo. Debemos de sacrificar que no pueda existir conexion entre extremos,
Distance Vector Routing¶
Cada roter de la red tiene una tabla con la fila que indica la info de cada nodo de la red . Enviamos a nuestros vecinos un vector con las distancias hacia los demas nodos de la tabla
Esto se hace de que cada x segundos se envian la tabla, Lo que se gana es que si mi vencino no me envia nada por mucho tiempo entonces es que se ultramurio, y le vamos poniendo cada vezmas pesos
Pasos del algoritmo¶
- Detectar mis vecinos
- Armar tu tabla y se la mandas a tus vecinos, y recalculas con el algoritmo que veremos acontinuacion
Mucho de estos codigos corren en paralello. No podes venir y secuencialmente bloquear todo lo demas.
En la figura se ve como a travez de ping creamos tablas en donde calculamosel tiempo de tus vecinos y luego llenas la tabla.
Habiendo hecho eso, luego como se ven en la figura tuodos los nodos comparten tablas, y luego en nodos que no se tienen ruta directa la distancia serian la distancia de mi hacia mi vecino y la de mi vecino al nodo D, esto se hace para nodos que no sabe D que existen. Ojo siempre se instancia D como infinito
Si una de las rutas es menor, de todas las calculadas al nuevo nodo se obtiene el que tiene menor pesos
Si llega un nuevo nodo, se le pide la tabla y se toman varias iteraciones para propagar la info del nuevo nodo. Por ello siempre se pide cada cierto tiempo la info para poder llenar las tablas
SI un nodo se cae es como lo mencionamos que el peso del tiempo lo colocamos de infinito, cada iteracion le incremento el peso mas y mas
Cuando algo se cae la info se tarda mas en propagarse porque se intuye que no esta caido.
Eventualmente le pondremos un time up. Y entonces le ponemos infito el peso.
Pero digamos que puede pasar que se restablece la conexion con otro nodo, entonces ahi hacemos el calculo, y podemos usar esa ruta en vez de la que ya teniamos con ese nodo.
Pero el problema es que si B esta muerto , C pensara que la mejor manera es pasarla por A ,etnonces el paquete estara rebotando entre los 2 ya que los 2 piensan que la mejor info es en el otro. Es como tener un ciclo casi infinito en donde los paquetes se reenvian a si mismo.
Despues se cambio a otro algoritmo debido a este problema de redireccionamiento propio
Link State Routing¶
Son protocolos sobre el algoritmo . Armamos una representacion completa de la red, y despues una vez yo ya tengo la info completa del grafo. Literal resuelvo con algoritmos con djstra.
Armemos el grafo primero para llamar a djstra.
Ose que enviamos a toda la red el grafo completo.
- Detectar vecinos y medir distancias
- Construir el paquete de enlace y enviarlo al brodcast.
- Empezamos a escuchar paquetes de la red, armamos el grafo y repetimos
El problema es que llenamos la red. D
Si lo vemos a nivel macro, eventualemnte me va a llegar un paquete de un nodo de los paquetes de red.
Si se cae D por ejemplo todo el mundo se dio cuenta que D se murio. Y dejan de enviar
Inicializacion¶
Los 4 nodos arrancan a la vez y conocen las intefaces y los vecinos, se arma el paquete y se envian a brodcast
Que es lo que debemos de optimizar si inundamos la red. Estos paqutes con el estado del enlace. Llevan tambien un numero de secuencia ,llevan un numero de edad e info.
EL paquetes de edad o TtL este campo de edad es envejecer el paquete , le vas restando y cuando lees 0 ya no inundas el paquete, Lo que permite que el paquete de estado, ese mismo paquete se quedaria dando vueltas, otra tecnia es que se espera un momento en enviar, y comparar con posiblemente paquetes de estados mas prontos y ver el estado del enlace. Esto es guardarlo un rato para ver que cambio..
El buffer de los router recuerda los LSPs recibidos en un tiempo.
Esa edad esta dada por la red no por el router, cuando la red se levanta.
Idealmente que la edad, por lo menos la edad tiene que ser el diametro de la red sino nunca lo vamos a enviar.
El wort case escenario es una red de linea recta. xd
Hay ciertos paquetes que solo lanzas, pero con confirmacion de recepcion, cada paquete que te envian debes de decirle al que te envio que lo recibiste bien y sin errores